From e02da28f52ac5fa8fdd90a35ca82f2e31504862c Mon Sep 17 00:00:00 2001 From: Tim Deegan Date: Mon, 20 Nov 2006 15:30:52 +0000 Subject: [PATCH] [XEN] Update shadow audit code. Make the flag checks line up with the current flag propagation strategy. Signed-off-by: Tim Deegan --- xen/arch/x86/mm/shadow/multi.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index 74dc27e6e8..4f3c1d2ba2 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -3941,22 +3941,22 @@ static char * sh_audit_flags(struct vcpu *v, int level, return "shadow is present but guest is not present"; if ( (sflags & _PAGE_GLOBAL) && !is_hvm_vcpu(v) ) return "global bit set in PV shadow"; - if ( (level == 1 || (level == 2 && (gflags & _PAGE_PSE))) - && ((sflags & _PAGE_DIRTY) && !(gflags & _PAGE_DIRTY)) ) - return "dirty bit not propagated"; if ( level == 2 && (sflags & _PAGE_PSE) ) return "PS bit set in shadow"; #if SHADOW_PAGING_LEVELS == 3 if ( level == 3 ) return NULL; /* All the other bits are blank in PAEl3 */ #endif + if ( (sflags & _PAGE_PRESENT) && !(gflags & _PAGE_ACCESSED) ) + return "accessed bit not propagated"; + if ( (level == 1 || (level == 2 && (gflags & _PAGE_PSE))) + && ((sflags & _PAGE_RW) && !(gflags & _PAGE_DIRTY)) ) + return "dirty bit not propagated"; if ( (sflags & _PAGE_USER) != (gflags & _PAGE_USER) ) return "user/supervisor bit does not match"; if ( (sflags & _PAGE_NX_BIT) != (gflags & _PAGE_NX_BIT) ) return "NX bit does not match"; if ( (sflags & _PAGE_RW) && !(gflags & _PAGE_RW) ) return "shadow grants write access but guest does not"; - if ( (sflags & _PAGE_ACCESSED) && !(gflags & _PAGE_ACCESSED) ) - return "accessed bit not propagated"; return NULL; } -- 2.30.2